package com.xbongbong.paas.service.workflow;

import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowAddSignatureDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowBackDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowCommitAgainDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowCommitDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowRefuseDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowRevokeDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowSignatureItemDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowStorageDTO;
import com.xbongbong.paas.pojo.workflow.operate.dto.WorkflowTransferDTO;
import com.xbongbong.paas.pojo.workflow.operate.vo.WorkflowAddSignatureVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseVO;

import javax.validation.Valid;

/**
 * 审批人工审批操作
 * @author 魏荣杰
 *
 */
public interface WorkflowApprovalOperatorService {

    /**
     * Description: 提交
     * @param workflowCommitDTO
     * @return void
     * @throws 
     * @author 魏荣杰
     * @date 2021/5/27 15:54
     */
    BaseVO commit(WorkflowCommitDTO workflowCommitDTO) throws XbbException;

    /**
     * Description: 拒绝
     * @param
     * @param workflowRefuseDTO
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/27 16:02
     */
    BaseVO refuse(WorkflowRefuseDTO workflowRefuseDTO) throws XbbException;

    /**
     * Description: 暂存
     * @param workflowStorageDTO
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/27 16:10
     */
    BaseVO storage(WorkflowStorageDTO workflowStorageDTO) throws XbbException;

    /**
     * Description: 转交
     * @param
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/27 16:11
     */
    BaseVO transfer(WorkflowTransferDTO workflowTransferDTO) throws XbbException;

    /**
     * Description: 撤回
     * @param
     * @param workflowRevokeDTO
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/27 16:11
     */
    BaseVO revoke(WorkflowRevokeDTO workflowRevokeDTO) throws XbbException;

    /**
     * Description: 回退
     * @param
     * @param workflowBackDTO
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/28 14:40
     * @since
     */
    BaseVO back(WorkflowBackDTO workflowBackDTO) throws XbbException;

    /**
     * Description: 重新提交
     * @param
     * @param workflowCommitAgainDTO
     * @return void
     * @throws
     * @author 魏荣杰
     * @date 2021/5/28 14:41
     * @since
     */
    BaseVO commitAgain(WorkflowCommitAgainDTO workflowCommitAgainDTO) throws XbbException;

    /**
     * Description: 加签
     * @param workflowAddSignatureDTO
     * @return com.xbongbong.paas.toolbox.wrap.BaseVO
     * @throws
     * @author 魏荣杰
     * @date 2022/7/12 16:27
     * @since
     */
    BaseVO addSignature(WorkflowAddSignatureDTO workflowAddSignatureDTO) throws XbbException;

    /**
     * Description: 加签弹窗接口
     * @param workflowSignatureItemDTO
     * @return com.xbongbong.workflow.pojo.vo.WorkflowAddSignatureVO
     * @throws
     * @author 魏荣杰
     * @date 2022/7/13 19:30
     * @since
     */
    WorkflowAddSignatureVO signatureItem(@Valid WorkflowSignatureItemDTO workflowSignatureItemDTO) throws XbbException;
}
